home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / TRCKR.PAK / TRACKDOC.CPP < prev    next >
C/C++ Source or Header  |  1997-05-06  |  6KB  |  218 lines

  1. // trackdoc.cpp : implementation of the CTrackerDoc class
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1995 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12.  
  13.  
  14. #include "stdafx.h"
  15. #include "trackapp.h"
  16.  
  17. #include "trackdoc.h"
  18.  
  19. #ifdef _DEBUG
  20. #undef THIS_FILE
  21. static char BASED_CODE THIS_FILE[] = __FILE__;
  22. #endif
  23.  
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CTrackerDoc
  26.  
  27. IMPLEMENT_DYNCREATE(CTrackerDoc, CDocument)
  28.  
  29. BEGIN_MESSAGE_MAP(CTrackerDoc, CDocument)
  30.     //{{AFX_MSG_MAP(CTrackerDoc)
  31.     ON_COMMAND(ID_EDIT_DOTTEDLINE, OnEditDottedline)
  32.     ON_UPDATE_COMMAND_UI(ID_EDIT_DOTTEDLINE, OnUpdateEditDottedline)
  33.     ON_COMMAND(ID_EDIT_HATCHEDBORDER, OnEditHatchedborder)
  34.     ON_UPDATE_COMMAND_UI(ID_EDIT_HATCHEDBORDER, OnUpdateEditHatchedborder)
  35.     ON_UPDATE_COMMAND_UI(ID_EDIT_HATCHEDINSIDE, OnUpdateEditHatchedinside)
  36.     ON_COMMAND(ID_EDIT_HATCHEDINSIDE, OnEditHatchedinside)
  37.     ON_COMMAND(ID_EDIT_RESIZEINSIDE, OnEditResizeinside)
  38.     ON_UPDATE_COMMAND_UI(ID_EDIT_RESIZEINSIDE, OnUpdateEditResizeinside)
  39.     ON_COMMAND(ID_EDIT_RESIZEOUTSIDE, OnEditResizeoutside)
  40.     ON_UPDATE_COMMAND_UI(ID_EDIT_RESIZEOUTSIDE, OnUpdateEditResizeoutside)
  41.     ON_COMMAND(ID_EDIT_SOLIDLINE, OnEditSolidline)
  42.     ON_UPDATE_COMMAND_UI(ID_EDIT_SOLIDLINE, OnUpdateEditSolidline)
  43.     ON_COMMAND(ID_EDIT_ALLOWINVERT, OnEditAllowInvert)
  44.     ON_UPDATE_COMMAND_UI(ID_EDIT_ALLOWINVERT, OnUpdateEditAllowInvert)
  45.     //}}AFX_MSG_MAP
  46. END_MESSAGE_MAP()
  47.  
  48. /////////////////////////////////////////////////////////////////////////////
  49. // CTrackerDoc construction/destruction
  50.  
  51. CTrackerDoc::CTrackerDoc()
  52. {
  53.     m_tracker.m_rect.left = 10;
  54.     m_tracker.m_rect.top = 10;
  55.     m_tracker.m_rect.right = 101;
  56.     m_tracker.m_rect.bottom = 101;
  57.     m_bAllowInvert = FALSE;
  58. }
  59.  
  60. CTrackerDoc::~CTrackerDoc()
  61. {
  62. }
  63.  
  64. BOOL CTrackerDoc::OnNewDocument()
  65. {
  66.     if (!CDocument::OnNewDocument())
  67.         return FALSE;
  68.     // TODO: add reinitialization code here
  69.     // (SDI documents will reuse this document)
  70.     return TRUE;
  71. }
  72.  
  73. /////////////////////////////////////////////////////////////////////////////
  74. // CTrackerDoc serialization
  75.  
  76. void CTrackerDoc::Serialize(CArchive& ar)
  77. {
  78.     if (ar.IsStoring())
  79.     {
  80.         DWORD dw = m_tracker.m_nStyle;
  81.         WORD w = (WORD)m_bAllowInvert;
  82.         ar << m_tracker.m_rect << dw << w;
  83.     }
  84.     else
  85.     {
  86.         DWORD dw;
  87.         WORD w;
  88.         ar >> m_tracker.m_rect >> dw >> w;
  89.         m_tracker.m_nStyle = (UINT)dw;
  90.         m_bAllowInvert = w;
  91.     }
  92. }
  93.  
  94.  
  95. /////////////////////////////////////////////////////////////////////////////
  96. // CTrackerDoc diagnostics
  97.  
  98. #ifdef _DEBUG
  99. void CTrackerDoc::AssertValid() const
  100. {
  101.     CDocument::AssertValid();
  102. }
  103.  
  104. void CTrackerDoc::Dump(CDumpContext& dc) const
  105. {
  106.     CDocument::Dump(dc);
  107. }
  108.  
  109. #endif //_DEBUG
  110.  
  111. /////////////////////////////////////////////////////////////////////////////
  112. // CTrackerDoc commands
  113.  
  114. void CTrackerDoc::OnEditSolidline()
  115. {
  116.     CRect rectTrue;
  117.     m_tracker.GetTrueRect(&rectTrue);
  118.     m_tracker.m_nStyle &= ~CRectTracker::dottedLine;
  119.     m_tracker.m_nStyle ^= CRectTracker::solidLine;
  120.     SetModifiedFlag();
  121.     UpdateAllViews(NULL, (LPARAM)(LPCRECT)rectTrue);
  122.     UpdateAllViews(NULL);
  123. }
  124.  
  125. void CTrackerDoc::OnUpdateEditSolidline(CCmdUI* pCmdUI)
  126. {
  127.     pCmdUI->SetCheck(!!(m_tracker.m_nStyle & CRectTracker::solidLine));
  128. }
  129.  
  130. void CTrackerDoc::OnEditDottedline()
  131. {
  132.     CRect rectTrue;
  133.     m_tracker.GetTrueRect(&rectTrue);
  134.     m_tracker.m_nStyle &= ~CRectTracker::solidLine;
  135.     m_tracker.m_nStyle ^= CRectTracker::dottedLine;
  136.     SetModifiedFlag();
  137.     UpdateAllViews(NULL, (LPARAM)(LPCRECT)rectTrue);
  138.     UpdateAllViews(NULL);
  139. }
  140.  
  141. void CTrackerDoc::OnUpdateEditDottedline(CCmdUI* pCmdUI)
  142. {
  143.     pCmdUI->SetCheck(!!(m_tracker.m_nStyle & CRectTracker::dottedLine));
  144. }
  145.  
  146. void CTrackerDoc::OnEditHatchedborder()
  147. {
  148.     CRect rectTrue;
  149.     m_tracker.GetTrueRect(&rectTrue);
  150.     m_tracker.m_nStyle ^= CRectTracker::hatchedBorder;
  151.     SetModifiedFlag();
  152.     UpdateAllViews(NULL, (LPARAM)(LPCRECT)rectTrue);
  153.     UpdateAllViews(NULL);
  154. }
  155.  
  156. void CTrackerDoc::OnUpdateEditHatchedborder(CCmdUI* pCmdUI)
  157. {
  158.     pCmdUI->SetCheck(!!(m_tracker.m_nStyle & CRectTracker::hatchedBorder));
  159. }
  160.  
  161. void CTrackerDoc::OnEditHatchedinside()
  162. {
  163.     CRect rectTrue;
  164.     m_tracker.GetTrueRect(&rectTrue);
  165.     m_tracker.m_nStyle ^= CRectTracker::hatchInside;
  166.     SetModifiedFlag();
  167.     UpdateAllViews(NULL, (LPARAM)(LPCRECT)rectTrue);
  168.     UpdateAllViews(NULL);
  169. }
  170.  
  171. void CTrackerDoc::OnUpdateEditHatchedinside(CCmdUI* pCmdUI)
  172. {
  173.     pCmdUI->SetCheck(!!(m_tracker.m_nStyle & CRectTracker::hatchInside));
  174. }
  175.  
  176. void CTrackerDoc::OnEditResizeinside()
  177. {
  178.     CRect rectTrue;
  179.     m_tracker.GetTrueRect(&rectTrue);
  180.     m_tracker.m_nStyle &= ~CRectTracker::resizeOutside;
  181.     m_tracker.m_nStyle ^= CRectTracker::resizeInside;
  182.     SetModifiedFlag();
  183.     UpdateAllViews(NULL, (LPARAM)(LPCRECT)rectTrue);
  184.     UpdateAllViews(NULL);
  185. }
  186.  
  187. void CTrackerDoc::OnUpdateEditResizeinside(CCmdUI* pCmdUI)
  188. {
  189.     pCmdUI->SetCheck(!!(m_tracker.m_nStyle & CRectTracker::resizeInside));
  190. }
  191.  
  192. void CTrackerDoc::OnEditResizeoutside()
  193. {
  194.     CRect rectTrue;
  195.     m_tracker.GetTrueRect(&rectTrue);
  196.     m_tracker.m_nStyle &= ~CRectTracker::resizeInside;
  197.     m_tracker.m_nStyle ^= CRectTracker::resizeOutside;
  198.     SetModifiedFlag();
  199.     UpdateAllViews(NULL, (LPARAM)(LPCRECT)rectTrue);
  200.     UpdateAllViews(NULL);
  201. }
  202.  
  203. void CTrackerDoc::OnUpdateEditResizeoutside(CCmdUI* pCmdUI)
  204. {
  205.     pCmdUI->SetCheck(!!(m_tracker.m_nStyle & CRectTracker::resizeOutside));
  206. }
  207.  
  208. void CTrackerDoc::OnEditAllowInvert()
  209. {
  210.     m_bAllowInvert = !m_bAllowInvert;
  211.     SetModifiedFlag();
  212. }
  213.  
  214. void CTrackerDoc::OnUpdateEditAllowInvert(CCmdUI* pCmdUI)
  215. {
  216.     pCmdUI->SetCheck(m_bAllowInvert);
  217. }
  218.